/*
  Model类和Json数据转换
  可以用IEDA插件,搜索json即可
  Dart中不能使用类似Gson的Json序列化类库
  因为flutter中禁用了反射，运行时反射会干扰Dart的_tree shaking_，使用_tree shaking_，可以在release版中“去除”未使用的代码，这可以显著优化应用程序的大小
  在启用反射时很难知道哪些代码未被使用，因此冗余代码很难剥离，所以Flutter中禁用了Dart的反射功能，
 */

import 'dart:convert';

void main() {
  String str = '{"name": "James", "email": "1234567@qq.com"}';
  Map userMap = json.decode(str);
  User userJ = User.fromJson(userMap);
  print(userJ.toString());
}

/// name : "James"
/// email : "1234567@qq.com"

class User {
  late String _name;
  late String _email;

  String get name => _name;
  String get email => _email;

  User({
    required String name,
    required String email}){
    _name = name;
    _email = email;
  }

  User.fromJson(dynamic json) {
    _name = json["name"];
    _email = json["email"];
  }

  Map<String, dynamic> toJson() {
    var map = <String, dynamic>{};
    map["name"] = _name;
    map["email"] = _email;
    return map;
  }

  @override
  String toString() {
    return 'name=$name\nemail=$email';
  }
}
